package com.rong.creatmodel.factorymodel.rk_abstractFactory;

/**
 * 简单工厂模式：不符合面向对象的开闭原则 修改为工厂模式
 * 工厂模式：定义一个用于创建对象的接口，让子类决定实例化哪个类
 */
public class SimpleFactory {
    public static void main(String[] args) {
        // 静态方法直接调用
//        Product pro = Factory.createProduct("A");
//        pro.info();
//
//        Product proB = Factory.createProduct("B");
//        proB.info();

        // 创建工厂A
        Factory factoryA = new FactoryA();
        Product pra = factoryA.creatProduct();
        pra.info();
        Factory factortB = new FactoryB();
        Product procuctB = factortB.creatProduct();
        procuctB.info();

    }
}


// 工厂
interface Factory{

    Product creatProduct();
}

// 简单工厂
//class Factory{
//    public static Product createProduct(String type){
//        Product product = null;
//
//        switch (type){
//            case "A":
//                product = new ProductA();
//                break;
//            case "B":
//                product = new ProductB();
//                break;
//            default:
//                System.out.println("未知产品" + type);
//                break;
//        }
//        return product;
//    }
//}

// 工厂
interface Product{
    void info();

}
//简单工厂
//abstract class Product{
//    public abstract void info();
//}


// 工厂
class FactoryA implements Factory{
    @Override
    public Product creatProduct() {
        return new ProcuctA();
    }
}

class ProcuctA implements Product{
    @Override
    public void info() {
        System.out.println("产品A信息");
    }
}

class FactoryB implements Factory{
    @Override
    public Product creatProduct() {
        return new ProcuctB();
    }
}

class ProcuctB implements Product{
    @Override
    public void info() {
        System.out.println("产品B信息");
    }
}

// 简单
//class ProductA extends Product{
//
//    @Override
//    public void info() {
//        System.out.println("产品A信息");
//    }
//}
//
//class ProductB extends Product{
//
//    @Override
//    public void info() {
//        System.out.println("产品B信息");
//    }
//}
